home *** CD-ROM | disk | FTP | other *** search
- ;
- ; This is an implementation of a square root function in
- ; LISP using the Newton-Raphson method as used in AutoCAD.
- ; It is intended as a test of floating point arithmetic in
- ; our LISP, as you can check accuracy with the statement:
- ; (- (sqr 2) (sqrt 2))
- ; which will compare the built-in function with this one.
- ;
- ; John Walker 12/17/84
- ;
- (defun sqr (x)
- (cond ((minusp x) 'Negative-argument)
- ((zerop x) 0.0)
- (t (setq y (/ (+ 0.154116 (* x 1.893872))
- (+ 1.0 (* x 1.047988))
- )
- )
- (setq c (/ (- y (/ x y)) 2.0))
- (setq cl 0.0)
- (while (not (equal c cl))
- (setq y (- y c))
- (setq cl c)
- (setq c (/ (- y (/ x y)) 2.0))
- )
- y
- )
- )
- )
-